草庐IT

Java Parallel Streams 关闭线程

全部标签

java - 从关闭文件方法抛出 IOException 时如何管理事务(包括文件 IO)

我最近开始使用Spring的数据源事务管理器。我现在有问题。我的事务包括对数据库表的更新和对文件的写操作。它工作正常,但我对文件I/O有一些疑问。正如您在下面看到的,我已经将我的bean的openFile和closeFile方法分别配置为init方法和destroy方法,这反过来又提供了这些方法,就像构造函数和析构函数一样被调用。如果文件没有正确关闭,一些记录可能没有成功写入output.txt文件,这意味着我也无法正确处理事务管理。但是,我想回滚那些尚未附加到平面文件的数据库更新。使用我的解决方案,似乎不可能将fileClose方法添加到事务中。有谁知道如何正确执行此所需操作?如有任

java - 线程 - 为什么我们在等待时使用 while(true)

在Java中的大多数线程示例中,通常使用while(true)block,如下所示:while(true){try{wait()}catch(Exceptionex){/*dosomething*/}}使用while(true)的目的是什么?它们在什么样的场景下特别有用?客户端/服务器通信?谢谢,-伊瓦尔 最佳答案 这种构造在我们创建线程池和可重用线程时使用。基本上,while(true)构造可防止池中的线程退出。一个例子是生产者-消费者的情况,其中线程wait()直到队列为空,一旦队列有数据,它们就会notify()ied和其中一

java - 线程不安全的递减/递增 - 为什么大多数是积极的?

我想知道java线程中不安全递减/递增的结果,所以有我的程序:主类:publicclassStart{publicstaticvoidmain(String[]args){intcount=10000000,pos=0,neg=0,zero=0;for(intx=0;x0)pos++;elseneg++;}System.out.println(Integer.toString(neg)+"\t\t\t"+Integer.toString(pos)+"\t\t\t"+Integer.toString(zero));}}线程类:publicclassMagicimplementsRunna

java - 如何检测 JFrame 是否关闭?

我尝试了addWindowListener并实现了windowClosing,当我按下关闭按钮时,它起作用了,但是当我使用Cmd+Q时要关闭,windowClosing没有被调用,我该如何解决?我是否需要通过按键监听器在Mac上检测Cmd+Q,在Windows上检测Alt+F4?这是关闭窗口的通用监听器,无论是通过关闭按钮或键盘,还是通过事件Ctrl+Alt+Delete或Cmd+Option+Esc来集中杀戮?谢谢。 最佳答案 我不确定在Mac上的情况如何,但在Windows上您会从关闭按钮获得windowClosing()回调;

java - 在响应完成之前关闭 HttpURLConnection

背景我正在使用HttpURLConnection在客户端使用HTTP流(服务器推送)情况下的响应。尽管服务器可能会通过关闭响应来关闭连接,但也需要客户端能够执行此操作。问题客户端在单独的线程中处理InputStream,如下所示:@Overridepublicvoidrun(){try{for(intb=in.read();b>=0;b=in.read()){charc=(char)b;//Dosomethingwiththecharacter//...}}catch(IOExceptione){}}所以当我调用HttpURLConnection.disconnect()从发起连接的线

java - 生产者消费者线程间通信

在线程间通信方面遇到问题,并通过到处使用“虚拟消息”来“解决”它。这是一个坏主意吗?有哪些可能的解决方案?我遇到的示例问题。主线程启动一个线程来处理并将记录插入数据库。主线程读取一个可能很大的文件并将一个记录(对象)一个接一个地放入阻塞队列中。处理线程从队列中读取并工作。如何告诉“处理线程”停止?队列可以是空的,但工作没有完成,主线程现在也没有,当处理线程完成工作并且不能中断它时。所以处理线程做while(queue.size()>0||!Thread.currentThread().isInterrupted()){MyObjectobject=queue.poll(100,Time

java - 选择线程执行屏障操作 - Java CyclicBarrier

查看CyclicBarrier的javadoc,我在类文档中发现了以下我不完全理解的语句。来自javadoc:Ifthebarrieractiondoesnotrelyonthepartiesbeingsuspendedwhenitisexecuted,thenanyofthethreadsinthepartycouldexecutethatactionwhenitisreleased.Tofacilitatethis,eachinvocationofawait()returnsthearrivalindexofthatthreadatthebarrier.Youcanthenchoo

java - Spring MVC单例线程安全?

我有一个单例Springbean(默认范围)。因此,一个实例将被多个线程使用。然而,我对线程安全有点困惑,显然所有Springbean如果它们是无状态的,它们都是线程安全的,但我的bean不是无状态的,它有各种实例变量,每个请求/其他Controller/类都使用这些变量。这是我的单例bean的开头:publicclassPcrfSimulator{privatefinalCustomGxSessionIdCacheImplgxSessionIdCache=newCustomGxSessionIdCacheImpl();privatefinalPcrfRecordpcrfRec=new

java - 线程中的最终字段语义

这是来自JLS17.5:Theusagemodelforfinalfieldsisasimpleone.Setthefinalfieldsforanobjectinthatobject'sconstructor.Donotwriteareferencetotheobjectbeingconstructedinaplacewhereanotherthreadcanseeitbeforetheobject'sconstructorisfinished.Ifthisisfollowed,thenwhentheobjectisseenbyanotherthread,thatthreadwill

java - 计数器更改时通知线程

我正在尝试为自己设计一个类作为CodeKata,它具有可以设置的值属性,并且该类可以发出ValueListener实例。这个想法是有一个ValueHolder实例,许多客户端线程同时访问它。每个客户端线程都请求了一个ValueWatcher并调用了waitForValue()。我真正纠结的是我应该在wait()周围的while循环中使用什么条件来避免虚假通知(即值没有改变)。我可以看到这种设计可能会使ValueWatcher实例错过更新,但现阶段我不太担心。如果能提供任何指导,我们将不胜感激!publicclassValueHolder{privateintvalue=0;privat